﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using vensoft.Entities;

namespace vensoft.DataAccess
{
    public class CategoriaDataAccess : MasterDataAcess, ICategoriaDataAccess
    {
         public CategoriaDataAccess ()
            : base()
        {
        }

        public List<Categoria> GetAllFromCategoria()
        {
            SqlCommand commando = base.CreateSelectCommand("GetAllFromCategoria");
            return SelectObjectFactory(commando);
        }
        private List<Categoria> SelectObjectFactory(SqlCommand commando)
        {
            List<Categoria> lista = new List<Categoria>();

            using (SqlDataReader reader = base.ExecuteReader(commando))
            {
                while (reader.Read())
                {   Categoria categoria= new Categoria()

                    
                    {
                        Cod_categoria= reader.GetInt32(0),
                        Nombre= reader.GetString(1),
                       Descripcion= reader.GetString(2)
                        
                    };

                    lista.Add(categoria);
                }
            }

            return lista;
        }

        public List<Categoria> GetFromCategoriaByNombre(string criterio)
        {
            SqlCommand command = base.CreateSelectCommand("GetFromCategoriaByNombre");
            command.Parameters.AddWithValue("@Nombre", criterio);
            return SelectObjectFactory(command);
        }

        public void EliminarCategoria(Categoria categoria)
        {
            SqlCommand command = base.CreateCommand("EliminarCategoria");
            base.AddInParameter(command, "Nombre", categoria.Nombre);
            base.ExecuteCommand(command);
        }

        public void RegistrarCategoria(Categoria categoria)
        {
            SqlCommand command = base.CreateCommand("RegistrarCategoria");
            AddParameters(categoria, command);
        }
        private void AddParameters(Categoria categoria, SqlCommand command)
        {
            base.AddInParameter(command, "Codigo_categoria", categoria.Cod_categoria);
            base.AddInParameter(command, "Nombre", categoria.Nombre);
            base.AddInParameter(command, "Descripcion",categoria.Descripcion);

            base.ExecuteCommand(command);
        }

            
        }
    }

